package cn.dao;

import cn.entity.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/**
 * @author Mxb
 * @version 1.0
 * @date 2020/9/19 10:40
 * JpaRepository<操作实体类类型，主键类型>：用来完成基本CRUD操作
 * JpaSpecificationExecutor<操作实体类类型>：用于复杂查询（分页等查询操作）
 */
public interface CustomerDao extends JpaRepository<Customer, Long>,
        JpaSpecificationExecutor<Customer> {
    //
    ////@Query 使用jpql的方式查询。
    //@Query(value = "from Customer")
    //public List<Customer> findAllCustomer();
    //
    ////@Query 使用jpql的方式查询。?1代表参数的占位符，其中1对应方法中的参数索引
    //@Query(value = "from Customer where custName = ?1")
    //public Customer findCustomer(String custName);
    //
    //// 对于多个占位符参数
    //// 赋值的时候，默认的情况下，占位符的位置需要和方法参数中的位置保持一致
    ////@Query 使用jpql的方式更新
    //@Query(value = "update Customer set custName = ?1 where custId = ?2")
    //@Modifying //用 @Modifying 来将该操作标识为修改查询
    //@Transactional //需要加事务
    //public void updateCustomer(String custName, Long custId);
    //
    //
    ///**
    // * nativeQuery : 是否使用本地sql的方式查询
    // */
    //@Query(value = "select * from cst_customer", nativeQuery = true)
    //public List<Customer> findAllSql();
    //
    ///**
    // * nativeQuery : 是否使用本地sql的方式查询
    // */
    //@Query(value = "select * from cst_customer where cust_name=? and cust_id = ?"
    //        , nativeQuery = true)
    //public Customer findByCustNameID(String custName, Long id);
    //
    //
    ////方法命名方式查询（根据客户名称查询客户）
    //public Customer findByCustName(String custName);
    //
    //
    ////方法命名方式   进行模糊查询
    //public List<Customer> findByCustNameLike(String custName);
    //
    //// 使用客户名称模糊匹配和客户所属行业精准匹配的查询
    //public Customer findByCustNameLikeAndCustLevel(String custName,String custLevel);

}
